import json

import google.protobuf.json_format as json_format
import pandas as pd


def proto_to_json(msg):
  json_pretty = json_format.MessageToJson(msg, preserving_proto_field_name=True)
  json_unpretty = json.dumps(json.loads(json_pretty))
  return json_unpretty


def protos_to_df(msgs):
  assert isinstance(msgs, list), type(msgs)
  dict_list = []
  msg_type = None
  for msg in msgs:
    if msg_type is None:
      msg_type = type(msg)
    else:
      assert type(msg) == msg_type, (type(msg, msg_type))
    dict_list.append(json_format.MessageToDict(msg, preserving_proto_field_name=True))
  return pd.DataFrame(dict_list)
